/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.designless.util;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

/**
 * Classe responsável por localizar serviços ou recursos via JNDI.
 *
 * @author diogenes.feijo
 */
public class ServiceLocator {

	private static Context context;

	static {
		try {
			context = new InitialContext();
		} catch (NamingException e) {
			throw new RuntimeException(e);
		}
	}

	/**
	 * Método responsável por realizar a busca do serviço
	 * ou recurso pelo nome JNDI.
	 *
	 * @param jndiName
	 *
	 * @return Serviço/Recurso
	 */
	@SuppressWarnings("unchecked")
	public static <E extends Object> E lookup(String jndiName) {
		try {
			return (E) context.lookup(jndiName);
		} catch (NamingException e) {
			throw new RuntimeException(e);
		}
	}

}